package com.boarsoft.boar.app;

import java.util.List;

import com.boarsoft.boar.entity.AppInst;
import com.boarsoft.common.dao.PagedResult;
import com.boarsoft.hibernate.biz.SimpleBiz;

public interface AppInstBiz extends SimpleBiz {
	/**
	 * 删除某个实例
	 *
	 * @param id
	 *            AppInst.id
	 */
	void delete(String id);

	/**
	 * 获取服务器信息
	 * 
	 * @param id-id
	 */
	AppInst get(String id);

	/**
	 * 获取服务器信息
	 *
	 * @param appId-应用Id
	 * @param serverId-服务器Id
	 */
	AppInst find(String appId, String serverId);

	/**
	 * 修改应用部署的状态
	 * 
	 * @param id-id
	 * @param status-状态
	 * @return boolean
	 */
	boolean status(String id, short status);

	/**
	 * 给一个新的应用新增一个已有应用与节点Id之间的关联关系 即是：复制一个已有应用与节点id之间的关联关系到一个新的应用
	 * 新应用就有了与老应用一样的节点关联
	 */
	boolean copy(String oldAppId, String newAppId);

	/**
	 * 批量添加应用部署
	 * 
	 * @param appId
	 * @param serverIds
	 */
	void bind(String appId, String[] serverIds);

	/**
	 * 批量添加应用部署
	 * 
	 * @param appIds
	 * @param serverId
	 */
	void add(String[] appIds, String serverId);

	/**
	 * 
	 * @param o
	 */
	void delete(AppInst o);

	int add(AppInst o);

	void update(AppInst o);
	
	void save(AppInst o);

	PagedResult<AppInst> list(String env, String serverId, String appId, String projId, String group, Short status, String key,
			String orderBy, int pageNo, int pageSize);

	List<AppInst> list(String env, String appId, String group, Short status);

	AppInst find(String ip, Integer port);

	List<AppInst> list(String ip);
}